tg-me.com/machinelearning_interview/1794
Last Update:
PyTorch ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» MetaShuffling β ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π² Llama 4 MoE, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄ΠΈΠ½Π°ΠΌΠΈΠ·ΠΌΠ° ΠΈ ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΠΎΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠΎΠΊΠ΅Π½ΠΎΠ². ΠΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² padding
ΠΈΠ»ΠΈ slicing
, MetaShuffling ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΏΠΎ ΡΠΊΡΠΏΠ΅ΡΡΠ°ΠΌ, ΠΈΠ·Π±Π°Π²Π»ΡΡΡΡ ΠΎΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ CPU ΠΈ GPU. ΠΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΡΡΡΠ°Π½ΡΠ΅Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Β«ΠΏΡΡΡΡΡΠ΅ΠΊΒ» ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΠΌΠΈ ΡΠ΄Π΅Ρ.
Π ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ - ΠΈΠ΄Π΅Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΎΠΊΠ΅Π½ΠΎΠ², Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ
ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΊΡΠΏΠ΅ΡΡΡ, Π² Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ dense tensors Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΡΡ
ΡΡΡΡΠΊΡΡΡ, ΡΠΎΡ
ΡΠ°Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠΌΡ Π΄Π°Π½Π½ΡΡ
.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ MetaShuffling ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ Π³ΡΠ°ΡΠΎΠ² (CUDAGraph
, torch.compile
), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΊΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΈΠ·Π±Π΅Π³Π°Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ
ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΉ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π»Ρ Llama 4, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ MoE-ΡΠ»ΠΎΠΉ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ Π»ΠΈΡΡ ΡΠ°ΡΡΡ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ², ΡΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.GroupedGEMM
, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Triton, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ°ΡΡΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ² ΠΈ Β«Π»ΠΈΡΠ½ΠΈΠ΅Β» ΡΠΎΠΊΠ΅Π½Ρ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π·Π°ΡΡΠ°Ρ.IndexShuffling
, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΠΈΡ
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΊΡΠΏΠ΅ΡΡΠ΅ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡ
ΠΎΠ΄, ΡΡΠΎ ΠΏΠΎ ΡΠ΅ΡΡΠ°ΠΌ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π² 5β13 ΡΠ°Π· Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ PyTorch.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Π½Π° H100 80GB Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠΈΠΌΠΈ.
Prefill Llama 4 Maverick Ρ FP8 GroupedGEMM Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ 1,197 TFlops ΠΏΡΠΈ 286 ΠΌΠΊΡ, ΡΡΠΎ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΏΡΠ΅Π΄Π΅Π»Ρ GPU.
Π Π·Π°Π΄Π°ΡΠ°Ρ
Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ Π²ΡΡΠΎΠΊΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ: 44,88 TFlops Π·Π° 59 ΠΌΠΊΡ. ΠΠ°ΠΆΠ΅ ΠΏΡΠΈ ΠΌΠ°Π»ΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠΊΠ΅Π½ΠΎΠ² (128) MetaShuffling ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ 80% ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ»Ρ multi-host ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² MetaShuffling ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Β«Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈΒ» ΠΈ Β«ΡΡΠ°ΡΠΈΡΠ½ΡΠΌΠΈΒ» ΡΠΎΡΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
. Π ΡΠ΅ΠΆΠΈΠΌΠ΅ eager
(Π±Π΅Π· Π³ΡΠ°ΡΠΎΠ²) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ CPU-GPU.
Π graph mode
β ΡΡΠ°ΡΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠΌΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΏΠ°Π΄Π΄ΠΈΠ½Π³ΠΎΠΌ, ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ ΠΈ ΠΏΠ°ΠΌΡΡΡ. Π’Π°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π΄Π΅Π΄ΡΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·Π»Π°ΠΌΠΈ, ΡΠ½ΠΈΠΆΠ°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ
.
MetaShuffling ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ FBGEMM Generative AI Kernel Library, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ vLLM ΠΈ SGLang.
@ai_machinelearning_big_data
#AI #ML #MetaShuffling #Pytorch